package jt.classic.system.workflow;

import jt.classic.system.user.IUser;

import org.limp.basework.SimpleBean;
import org.limp.basework.Table;

import java.util.List;
import java.util.Map;


/**
 * 流转活动记录
 *
 * @author bizkit
 *
 */
public interface WActivity extends SimpleBean {
    /**
     * 记录ID
     * @return String
     */
    public String id();

    /**
     * 记录标题
     * @return String
     */
    public String ititle();

    /**
     * 记录状态(-1起草暂存,0未办理,1办理中,2办理完成)
     * @return int
     */
    public int istate();
    
    /**
     * 记录类型(0正常办理,1传阅,2抄送)
     * @return int
     */
    public int itype();

    /**
     * 开始时间
     * @return String
     */
    public String istarttime();

    /**
     * 结束时间
     * @return String
     */
    public String iendtime();

    /**
     * 办理时限
     * @return String
     */
    public String ilmtime();

    /**
     * 是否锁定
     * @return boolean
     */
    public boolean ilock();

    /**
     * 锁定人
     * @return IUser
     */
    public IUser ilocker();

    /**
     * 记录过程ID
     * @return String
     */
    public String iprocess();

    /**
     * 记录分组ID
     * @return String
     */
    public String igroup();

    /**
     * 环节
     * @return WStep
     */
    public WStep istep();

    /**
     * 上一活动记录ID
     * @return WActivity
     */
    public WActivity ilast();

    /**
     * 下一活动记录
     * @return WActivity
     */
    public List inext();

    /**
     * 流程实例
     * @return WInstance
     */
    public WInstance instance();
    
    /**
     * 退回说明
     * @return String
     */
    public String ibackmemo();

    /**
     * 记录内容
     * @param table 关联表
     * @return List
     */
    public List icontent(Table table);

    /**
     * 重新加载记录内容
     * @param content 记录内容
     */
    public void reloadContent(Map content);

    /**
     * 流程办理人
     * @return WExecutor
     */
    public WExecutor iexecutor();
    
    /**
     * 活动记录能否取回
     * @return boolean
     */
    public boolean canretake();

    /**
     * 可退回的环节相关活动记录
     * @return List
     */
    public List ilist4back();

    /**
     * 拥有者
     * @return boolean
     */
    public boolean iowner(IUser user);
}
